21
תגובות

הודעת Forbidden!!!

פתח משתמש_83709 ,
שלום לכולם,
בניתי מערכת ניהול ובתוכה יש אפשרות להוסיף לינקים שיוצגו באתר.
הבעיה היא שהשרת לא מאפשר לי להכניס לDB קישורים. אני מבין שזו פרצת אבטחה ולכן השרת מונע זאת.
אבל מהיא החלופה, איך אני יכול להעלות לינקים דרך המערכת ניהול מבלי שיסורבו ע"י השרת.

יש לי גם בעיה דומה עם קוד של פלאש שאני רוצה להעלות לאתר!

מודה מראש לעוזרים!

21 תשובות

avatar ענה xzxxx7 ב 15 לינואר 2012 #

מוזר, בד"כ השרת לא צריך להתערב באבטחת הסקריפט.
תנסה את זה:

<form method="post">
  <input type="url" name="my_url" value="http://www.foo.ltd" />
  <input type="submit" value="test" />
</form>

ותגיד אם אתה עדיין מקבל fordidden..

avatar ענה intval ב 15 לינואר 2012 #

השרת בעצמו לא מונע שום דבר, אלה אם כן מותקן עליו איזשהו תוסף mod כלשהו שעושה את זה, למרות שאני בספק ולא ראיתי כאלה. forbidden בדרך כלל מסמל את זה שאין לקוד הרשאות לקרוא קובץ מסוים או למשתמש לגשת לכתובת מסוימת ולא קשור לא לטפסים ולא לתוכן שלהם.
ובטח שלא אם אתה עובד על לוקאל הוסט.

ככה שאני לא חושב שההבחנה שלך לגבי הסיבה היא מדויקת.
תתאר בבקשה את הבעיה, מה אתמה מנסה להזין, באיזה שרת מדובר.
יעזור אם תצרף את הקוד שלך ואת התוכן של phpinfo

avatar ענה Aviway ב 15 לינואר 2012 #

עדיין נותן את הודעת ה
fordidden
You don't have permission to access /admin/pages/update/add_link.php on this server.

avatar ענה Aviway ב 15 לינואר 2012 #

בתחתית האתר שני בונה כרגע, יש שורת לינקים שמנהל האתר רוצה לשלוט עליהם.
לכן יצרתי לו טופס המאפשר להעלות לינקים לאותה שורה, דרך פאנל ניהול האתר.
השרת הוא שרת לינוקס.
ניסיתי לשנות את ההרשאות, וזה עדיין לא מעלה.
זו לא פעם ראשונה שאני נתקל בזה, גם בשרת הקודם שהייתי, היה אותו סיפור, התמיכה של השרת אמרו שיש להם MOD SECURITY, ושזו החלטה שלי אם להשאיר אותו

avatar ענה intval ב 15 לינואר 2012 #

יכול להיות שרעיון טוב יהיה להוריד אותו. יש סיכוי שהוא זה שגורם לך לכל הבעיות.

avatar ענה Aviway ב 15 לינואר 2012 #

זה לא משהו קבוע בכל שרת?
אין חשש אבטחתי מלהוריד אותו?

avatar ענה intval ב 15 לינואר 2012 #

לא, השרתים באים בלי זה וזה תוסף שהותקן על ידי חברת האחסון בנפרד.
כשמתקינים כזה לשימוש אישי בדרך כלל מקנפגים אותו בעת ההתקנה. חברות האחסון לא שמות כזה כי אי אפשר לקנפג אותו פר משתמש. שלך הראשונים שאני שומע שעושים את זה.

avatar ענה Aviway ב 15 לינואר 2012 #

$query="INSERT INTO bottom_links (lin_name ,lin_src, lin_stat) VALUES ('".$add_lin_name."','".$add_lin_src."','hide')";
  mysql_query("SET NAMES 'utf8'");
  $result=mysql_query($query);
  if(!$result)
  return false;
  else
  return true;

זה הQUERY שמעלה את הקישור לDB.
למשתנים אני עושה לפני STR_REPLACE.
יש דרך אחרת לעשות את זה?

avatar ענה intval ב 15 לינואר 2012 #

כמובן. השבוע זה הפעם ה11 שאני נותן קישור לזה.
בדיוק באמצע המסך - הגנה מפני sql injection החלק על mysql_real_escape_string

avatar ענה xzxxx7 ב 15 לינואר 2012 #

אלכס פרוייקט חדש, בו נבנה בוט שעובד בFXP ופה ועונה על שאלות כאלה XD

avatar ענה Aviway ב 20 לינואר 2012 #

חברה הבעיה עדיין לא נפתרה, קראתי את המאמר על sql injectio, והוספתי

$add_lin_src = mysql_real_escape_string($_POST['add_lin_src']);


לפני השאילתא

$query="INSERT INTO bottom_links (lin_name ,lin_src, lin_stat) VALUES ('".$add_lin_name."','".$add_lin_src."','hide')";
  mysql_query("SET NAMES 'utf8'");
  $result=mysql_query($query);
  if(!$result)
  return false;
  else
  return true;


למרות זאת עדיין לא עובד!, מראה לי שוב את ההודעה הבאה:
Forbidden

You don't have permission to access /admin/***/****/*****.php on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

avatar ענה intval ב 20 לינואר 2012 #

וזה קורה תמיד, לא משנה מה אתה כותב בשדות של הטופס?
אין שם איזשהו include לאיזה קובץ שאין עליו הרשות? תנסה לשים 777 על כל התיקיות והקבצים בתוכם לצורך בדיקה? לא נראה לי ש mod_security הוא זה שעושה את הבעיות.

+ הוספת mysql_real_escape_string למשתנה אחד. גם לשני הוספת?

avatar ענה Aviway ב 20 לינואר 2012 #

כן תמיד זה קורה, ואין שום include.
זה הקובץ במלואו:
1. טופס:

<form method="post" action="pages/update/add_link.php">
        <td colspan="2">שם: <input type="text" name="add_lin_name" /></td>
        <td colspan="2">כתובת: <input type="text" name="add_lin_src" /></td>
        <td><input type="submit" value="הוסף קישור"/></td>
      </form>

2. add_link.php:
<?php
include "../../../connect_to_db.php";
include "../../../functions.php";

$add_lin_name = mysql_real_escape_string($_POST['add_lin_name']);
$add_lin_src = mysql_real_escape_string($_POST['add_lin_src']);

$insert_result = insert_new_link($add_lin_name, $add_lin_src);

function insert_new_link($add_lin_name, $add_lin_src){
  $query="INSERT INTO bottom_links (lin_name ,lin_src, lin_stat) VALUES ('".$add_lin_name."','".$add_lin_src."','hide')";
  mysql_query("SET NAMES 'utf8'");
  $result=mysql_query($query);
  if(!$result)
  return false;
  else
  return true;
}

if($insert_result == false)
die('Something is wrong');
else
{
  $_SESSION['update_link'] = 'OK';
  header('Location:'.$last_page);
}


?>

avatar ענה Aviway ב 20 לינואר 2012 #

גם עם ההרשאות זה לא עובד!

avatar ענה intval ב 20 לינואר 2012 #

תנסה לשים

echo 'hello'
בתור כל הקוד.
בכל זאת לבקש לנתק את mod_security

avatar ענה Aviway ב 20 לינואר 2012 #

זה עובד עם הWAMP
אבל לא בשרת!

avatar ענה Aviway ב 20 לינואר 2012 #

טוב אני אבקש!

avatar ענה intval ב 20 לינואר 2012 #

תנסה גם להוסיף ל htaccess את השורות

<IfModule mod_security.c>
    # Turn off mod_security filtering.
   SecFilterEngine Off

    # The below probably isn't needed, but better safe than sorry.
   SecFilterScanPOST Off
</IfModule

avatar ענה משתמש_90322 ב 22 לינואר 2012 #

גם לא עובד!
הזוי הנושא הזה, האם יש חלופות לפעולה הזאת?

avatar ענה intval ב 22 לינואר 2012 #

תנסה את אותם שני שורות בלי ה if ?
אבל הבעיה כנראה דווקא ב mod_security

avatar ענה Aviway ב 27 לינואר 2012 #

טוב הדבר היחיד שמצליח לי, זה לשלוח את הטופס בGET, דרך פונקציה של JS.
יש בעיית אבטחה עם זה?